zarovnanie nulami vo FB
Otázka od: Miso
27. 5. 2004 10:01
Zdar !
..mam ciselne pole a potreboval by som ho zmenit na string zarovnany z lava
nulami na urcity pocet znakov..existuje na to pod FB nejaka funkcia (prip.
UDF) alebo si mam na to urobit nejaku SP?
priklad : 1234 -> 00001234
dik,
Miso
Odpovedá: petr palicka
27. 5. 2004 16:45
Ahoj,
jednou jsem si na to psal UDFku:
(*
/* string cisel doplneny nulama zleva */
declare external function LZero
cstring(254), Integer
returns cstring(254) free_it
entry_point 'LZero' module_name 'ag_udf.dll';
*)
function LZero(Source: PChar; var i: Integer): PChar; cdecl; export;
var
s1, s2: string;
j, k: Integer;
begin
s1:=string(Source);
s1:=Trim(s1);
k:=Length(s1);
for j:=1 to k do
if s1[j]in ['0'..'9'] then
s2:=s2+s1[j]; // pouze cislice!
k:=i-Length(s2);
for j:=1 to k do
s2:='0'+s2;
s2:=s2+#0;
Result:=ib_util_malloc(Length(s2));
StrPCopy(Result, s2);
end;
ale mozna ze existuje nejaka leftpadding funkce.
hledej lpad, leftpad...
kolegyne jednou pouzila v triggeru tohle:
S = new.BLOK;
if (S is null) then S = '';
S = LTrim(S);
S = RTrim(S);
if (S is null) then S = '';
l = StrLen(S);
while (l < 4) do -- delka 4 zleva nuly
begin
S = '0' || S;
l = StrLen(S);
end
new.Blok = S;
Peca